// JointFormer.h: interface for the JointFormer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_JOINTFORMER_H__C9DC8150_500A_4A0E_8FAE_01E30E22412B__INCLUDED_)
#define AFX_JOINTFORMER_H__C9DC8150_500A_4A0E_8FAE_01E30E22412B__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "PropertyVariable.h"
#include "PropertyStack.h"
#include "FunctionStack.h"

class Joint;
class DllExport JointFormer  
{
public:
	JointFormer();
	virtual ~JointFormer();

public:

	PropertySystem::PropertyStack& GetPropertyStack(){
		return m_PropertyStack;
	}

	FunctionStack& GetFunctionStack(){
		return m_FunctionStack;
	}
	
	INT ID() const {
		return m_nID;
	}

	void ID(INT nID){
		m_nID = nID;
	}
	
	void FirstJointTypeID(INT nID){
		m_nFirstJointStyleID = nID;
	}

	INT FirstJointTypeID(){
		return m_nFirstJointStyleID;
	}

	void NextJointTypeID(INT nID){
		m_nNextJointStyleID = nID;
	}

	INT NextJointTypeID(){
		return m_nNextJointStyleID;
	}

	void SetJoint(Joint* pJoint);

private:
	void SetProperties(Joint* pJoint);
	void SetFunctions(Joint* pJoint);

private:
	FunctionStack m_FunctionStack;
	PropertySystem::PropertyStack m_PropertyStack;
	INT m_nID;
	INT m_nFirstJointStyleID;
	INT m_nNextJointStyleID;
};

#endif // !defined(AFX_JOINTFORMER_H__C9DC8150_500A_4A0E_8FAE_01E30E22412B__INCLUDED_)
